package com.qd.panda.service.wallet.user;

import com.qd.common.panda.domain.entity.wallet.user.UserWalletRechargeLogDTO;
import com.qd.panda.service.stroke.DisplayUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author sjk
 */
@Service
@Slf4j
@RequiredArgsConstructor
public class WalletHolderService {

    private final WalletService walletService;
    private final UserWalletRechargeLogService userWalletRechargeLogService;

    @Transactional(rollbackFor = Exception.class)
    public void updateOrderStatus(String bid, Integer payStatus) {
        UserWalletRechargeLogDTO userWalletRechargeLog = userWalletRechargeLogService.getByIdDto(bid);
        if (null == userWalletRechargeLog) {
            return;
        }
        if (userWalletRechargeLog.getPayStatus().equals(DisplayUtil.PAY_STATUS_1)) {
            return;
        }
        if(userWalletRechargeLog.getPayStatus().equals(DisplayUtil.PAY_STATUS_2) || userWalletRechargeLog.getPayStatus().equals(DisplayUtil.PAY_STATUS_4)){
            userWalletRechargeLog.setPayStatus(payStatus);
            userWalletRechargeLogService.update(userWalletRechargeLog);
        }else{
            walletService.updateOrderStatus(userWalletRechargeLog.getUserId(), bid, payStatus);
        }
        userWalletRechargeLog.freeData();
    }
}
